package CalculDesSalaires.impl;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashSet;

import CalculDesSalaires.impl.Mentor;
import CalculDesSalaires.impl.Company;

/**
 * Lecture des informations sur des employés à partir d'un fichier texte.
 * afficahge sur le terminal et création d'un fihcier report de type texte.
 * @author Hetoo
 *
 */
public class Exercice3 {

	/**
	 * Execution du programme principal.
	 * @param args
	 */
	public static void main(String[] args) 
	{
		
		/**
		 * Déclaration de la company. 
		 */
		HashSet<Employee> listEmployee = new HashSet<Employee>() ; 
		HashSet<Mentee> listMentee = new HashSet<Mentee>() ; 
		Company Company1 = new Company("Company1",listEmployee,listMentee);
		
		/**
		 * Lecture du fichier init.txt
		 */
		String[][] oneData = new String[4][5];

		//lecture du fichier texte	
		try{
			InputStream ips=new FileInputStream("init.txt"); 
			InputStreamReader ipsr=new InputStreamReader(ips);
			BufferedReader br=new BufferedReader(ipsr);
			
			String ligne;			
			// on rajoute un compteur i pour permettre de stocker les valeurs par ligne.
			int i = 0;
		
			while ((ligne=br.readLine())!=null){
				// on extrait chaque terme séparé par une virgule.
				oneData[i] = ligne.split(",");
				i++;
			}

			br.close(); 
				
		}		
		catch (Exception e){
			System.out.println(e.toString());
		}

		
		/**
		 * Création des employés.
		 */
		Employee employe1 = new Employee(oneData[3][0],Integer.parseInt(oneData[3][2]),Integer.parseInt(oneData[3][1]));
		Mentee mentee1 = new Mentee(oneData[1][0],Integer.parseInt(oneData[1][2]),Integer.parseInt(oneData[1][1]));		
		Mentee mentee2 = new Mentee(oneData[2][0],Integer.parseInt(oneData[2][2]),Integer.parseInt(oneData[2][1]));
		Mentor mentor1 = new Mentor(oneData[0][0],Integer.parseInt(oneData[0][2]),Integer.parseInt(oneData[0][1]));
		
		/**
		 * Initialisation des langages.
		 */
		mentor1.setLanguage(oneData[0][3]); 
		mentee1.setLanguage(oneData[1][3]);
		mentee2.setLanguage(oneData[2][3]);
		employe1.setLanguage(oneData[3][3]);
		
		/**
		 * Ajout des employés.
		 */
		Company1.addEmployee(employe1);
		Company1.addEmployee(mentor1);
		Company1.addEmployee(mentee1);
		Company1.addEmployee(mentee2);
		
		Company1.addEmployee(mentee1, mentor1);
		Company1.addEmployee(mentee2, mentor1);
		
		/**
		 * Affichage des salaires mensuels d'un employé.
		 */
			Company1.displayEmployees();
			Company1.displayReport("report.txt");
		
	}
}
